查看原文
其他

实时Git,在版本控制之前控制源码

h4cd 开源中国 2020-09-02

Git 用于源代码版本控制已经是一个很强大的神器了,但是有人在此基础上还开发了一个被认为是“实时 Git”的工具。

这个工具叫 Coactive,它以 Visual Studio 插件的形式存在,作者描述它的作用是让开发者实时查看队友正在处理哪些文件(如上图),并且在操作 commit 之前,都可以查看到文件版本与自己的版本之间的差异(如下图),这样可以让整个开发团队不同的成员在确定某一版本代码之前心理有数,写出的代码能够尽量避免合并冲突。

这样的功能,其实就是把 Git 的阶段性操作(版本)再微分到开发团队中每个人编写代码过程中的每个时刻,所以有人评论这是一个实时 Git,“它在源代码进行版本控制之前进行版本控制,怎么可能出错?”,表达了他们对于这一创造性设计的惊叹:

但是评论中也有不同的声音,有个 20 年经验的版本控制老司机认为这种方法存在问题,他的想法是这样的:

  • 这种类似锁定文件来防止合并冲突的方法其实早在 Git 和 SVN 之前就有了,但是文件级粒度的版本控制没有意义,许多代码库文件都有成千上万行代码,如果有人在同一个文件中工作,那会导致大量误报;

  • 并不是所有代码更改都要 commit,通常会对调试或原型进行本地更改,并计划丢弃,或将它们提交给新的分支。

  • 分支情况又怎么确定?通知纯粹是基于文件名吗?那你如果收到与其他工程师正在处理同一个文件的信息,但是这个文件是在同一个分支上吗?

  • Coactive 无法避免冲突,它只会减少冲突的数量,但会以其它方式增加成本。开发者必须思考一大堆问题才能知道如何解决冲突,比如“我是否要改变我的计划并等到 Bob 完成该文件?”、“我是否要发消息给 Bob,了解他的计划是什么?”、“我们要编辑相同的行吗?”、“怎样可以更快/更容易地处理冲突?”

老司机认为 Coactive 这个工具对于涉及到的文件很少的小团队会非常有用,但是文件多了就会适得其反,而沟通才是更重要的,他说:“我不认为插件可以取代传统的团队沟通。”

下边的跟帖有人还据此提出了完善建议,他认为直接让该工具只给出冲突提示,而不是文件级的源码差异,这样就可以适用于大型团队:


你怎么看呢?

Coactive 运行环境需要:

  • Visual Studio 2017 或 2019

  • Git

项目主页:https://coactive.io

开源中国征稿啦!


开源中国 www.oschina.net 是目前备受关注、具有强大影响力的开源技术社区,拥有超过 400 万的开源技术精英。我们传播开源的理念,推广开源项目,为 IT 开发者提供一个发现、使用、并交流开源技术的平台。


现在我们开始对外征稿啦!如果你有优秀的技术文章想要分享,热点的行业资讯需要报道等等,欢迎联系开源中国进行投稿。投稿详情及联系方式请参见:我要投稿


推荐阅读

Debian 10 "buster" 正式发布

Redis 6 采用新协议来实现客户端缓存功能

微软内核工程师称 ReactOS 剽窃 Windows 代码

MongoDB:有人敢像我一样说出开源的真实用意吗?

Windows 1.11 登录微软商店

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存